/**
 * 
 */

package com.gustozzi.distribucion.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.gustozzi.distribucion.action.util.Constantes;
import com.gustozzi.distribucion.negocio.DistribucionBO;
import com.gustozzi.distribucion.negocio.impl.DistribucionBOImpl;
import com.gustozzi.domain.Despacho;
import com.gustozzi.domain.Pedido;
import com.gustozzi.domain.Usuario;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @author FABRIZIO
 * 
 */
public class LoginAction extends ActionSupport implements ServletRequestAware
{
    private static final long serialVersionUID = 1L;
    DistribucionBO distribucionBO = new DistribucionBOImpl();
    private Usuario usuario;
    private Usuario beanUsuario;
    private Despacho despachoBusqueda;
    private boolean indicadorConsulta;
    private List<Despacho> listaDespachos;
    private String codigoSeleccionado;
    private HttpServletRequest request;
    private boolean indicadorModificarDespacho;
    private Pedido pedidoBusqueda;
    private List<Pedido> listaPedidos;
    private ArrayList<String> listaSeleccionados;

    private String centroPedido;
    private String fechaEntrega;

    public String execute()
    {
        String destino = "";
        try
        {
            String codigo = usuario.getCodigo();
            String password = usuario.getPassword();

            beanUsuario = distribucionBO.obtenerUsuario(codigo, password);
            request.getSession().setAttribute(Constantes.USUARIOSESSION, beanUsuario);

            if (beanUsuario == null)
            {
                destino = Constantes.ERROR;
            }
            else
            {
                destino = Constantes.CONSULTARDESPACHO;
            }
        }
        catch (Exception e)
        {
            destino = Constantes.ERROR;
            e.printStackTrace();
        }
        return destino;
    }

    public String obtenerListaDespacho()
    {
        String destino = "";
        List<Despacho> lista = null;
        try
        {
            String codigo = despachoBusqueda.getCodigo();
            String codigoCentroDistribucion = despachoBusqueda.getCentroDistribucion().getCodigo();
            String fechaDesde = despachoBusqueda.getFechaDesde();
            String fechaHasta = despachoBusqueda.getFechaHasta();

            lista = new ArrayList<Despacho>();
            lista = distribucionBO.obtenerListaDespacho(codigo, codigoCentroDistribucion, fechaDesde, fechaHasta);
            this.setListaDespachos(lista);

            request.getSession().setAttribute("listaDespachosSession", lista);
            indicadorConsulta = true;
            destino = "SUCCESS";
        }
        catch (Exception e)
        {
            destino = "ERROR";
        }
        return destino;
    }

    public String generarReporte()
    {
        String destino = "REPORTE";
        return destino;
    }

    public Usuario getUsuario()
    {
        return usuario;
    }

    public void setUsuario(Usuario usuario)
    {
        this.usuario = usuario;
    }

    public boolean getIndicadorConsulta()
    {
        return indicadorConsulta;
    }

    public void setIndicadorConsulta(boolean indicadorConsulta)
    {
        this.indicadorConsulta = indicadorConsulta;
    }

    /**
     * @return the despachoBusqueda
     */
    public Despacho getDespachoBusqueda()
    {
        return despachoBusqueda;
    }

    /**
     * @param despachoBusqueda
     *            the despachoBusqueda to set
     */
    public void setDespachoBusqueda(Despacho despachoBusqueda)
    {
        this.despachoBusqueda = despachoBusqueda;
    }

    /**
     * @return the listaDespachos
     */
    public List<Despacho> getListaDespachos()
    {
        return listaDespachos;
    }

    /**
     * @param listaDespachos
     *            the listaDespachos to set
     */
    public void setListaDespachos(List<Despacho> listaDespachos)
    {
        this.listaDespachos = listaDespachos;
    }

    @Override
    public void setServletRequest(HttpServletRequest request)
    {
        this.request = request;

    }

    /**
     * @return the codigoSeleccionado
     */
    public String getCodigoSeleccionado()
    {
        return codigoSeleccionado;
    }

    /**
     * @param codigoSeleccionado
     *            the codigoSeleccionado to set
     */
    public void setCodigoSeleccionado(String codigoSeleccionado)
    {
        this.codigoSeleccionado = codigoSeleccionado;
    }

    /**
     * @return the indicadorModificarDespacho
     */
    public boolean isIndicadorModificarDespacho()
    {
        return indicadorModificarDespacho;
    }

    /**
     * @param indicadorModificarDespacho
     *            the indicadorModificarDespacho to set
     */
    public void setIndicadorModificarDespacho(boolean indicadorModificarDespacho)
    {
        this.indicadorModificarDespacho = indicadorModificarDespacho;
    }

    /**
     * @return the pedidoBusqueda
     */
    public Pedido getPedidoBusqueda()
    {
        return pedidoBusqueda;
    }

    /**
     * @param pedidoBusqueda
     *            the pedidoBusqueda to set
     */
    public void setPedidoBusqueda(Pedido pedidoBusqueda)
    {
        this.pedidoBusqueda = pedidoBusqueda;
    }

    /**
     * @return the listaPedidos
     */
    public List<Pedido> getListaPedidos()
    {
        return listaPedidos;
    }

    /**
     * @param listaPedidos
     *            the listaPedidos to set
     */
    public void setListaPedidos(List<Pedido> listaPedidos)
    {
        this.listaPedidos = listaPedidos;
    }

    /**
     * @return the listaSeleccionados
     */
    public ArrayList<String> getListaSeleccionados()
    {
        return listaSeleccionados;
    }

    /**
     * @param listaSeleccionados
     *            the listaSeleccionados to set
     */
    public void setListaSeleccionados(ArrayList<String> listaSeleccionados)
    {
        this.listaSeleccionados = listaSeleccionados;
    }

    /**
     * @return the centroPedido
     */
    public String getCentroPedido()
    {
        return centroPedido;
    }

    /**
     * @param centroPedido
     *            the centroPedido to set
     */
    public void setCentroPedido(String centroPedido)
    {
        this.centroPedido = centroPedido;
    }

    /**
     * @return the fechaEntrega
     */
    public String getFechaEntrega()
    {
        return fechaEntrega;
    }

    /**
     * @param fechaEntrega
     *            the fechaEntrega to set
     */
    public void setFechaEntrega(String fechaEntrega)
    {
        this.fechaEntrega = fechaEntrega;
    }
}